/**
 * @文件名 SetupInit.java
 * @包名 com.nutz.cngrain.tbw.init
 * @说明  声明应用启动时处理抽象类
 * @作者 wdfang
 * @时间 2013-1-27 上午12:56:35
 * @版本 V1.0
 */ 
package com.fang.yttz.init;

import java.io.InputStream;
import java.util.Date;
import java.util.Properties;

import org.apache.log4j.PropertyConfigurator;
import org.nutz.dao.Cnd;
import org.nutz.dao.Condition;
import org.nutz.dao.Dao;
import org.nutz.dao.entity.annotation.Table;
import org.nutz.lang.Lang;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.Setup;
import org.nutz.resource.Scans;

import com.fang.yttz.SysParameter;
import com.fang.yttz.model.Tbuser;

/**
 * @类名 SetupInit
 * @描述 应用启动时处理抽象类
 * @作者 wdfang
 * @日期 2013-1-27 上午12:56:35
 * ========修改日志=======
 *
 */
public class SetupInit implements Setup{
	/**
	 * 调用日志接口
	 */
	private Log log = Logs.get();
	@Override
	public void init(NutConfig nutconfig) {
		/**
		 * 日志属性加载
		 */
		Log4jInit(nutconfig);
		/**
		 * 全局变量初始化
		 */
		setSysParameter(nutconfig);
		/**
		 * 数据库数据初始化
		 */
		dataInsertInit(nutconfig);
	}

	@Override
	public void destroy(NutConfig nutconfig) {
		
	}
	
	/**
	 * 
	 * @名称 Log4jInit
	 * @描述 日志属性的加载
	 * @参数 @param nutconfig
	 * @返回值 void
	 * @作者 wdfang
	 * @时间 2013-1-29 下午4:15:13
	 */
	private void Log4jInit(NutConfig nutconfig) {
		try {
			log.info("log4j 属性初始化开始！ ...");
			String file = nutconfig.getServletContext().getInitParameter("log4j-config");
			
			InputStream is = nutconfig.getServletContext().getResourceAsStream(file);
			Properties props = new Properties();
			if (file == null)
				file = "/WEB-INF/classes/log4j.properties";
			if (file != null) {
				props.load(is);
				PropertyConfigurator.configure(props);
				log.info("log4j 属性初始化结束！ ...");
			}
		} catch (Exception e) {
			log.error(e);
		} 
	}
	/**
	 * 
	 * @名称 setSysParameter
	 * @描述  全局变量初始化
	 * @参数 @param nutconfig
	 * @返回值 void
	 * @作者 dfwang
	 * @时间 2013-2-20 上午10:34:14
	 */
	private void setSysParameter(NutConfig nutconfig) {
		/**
		 * 全局参数设定
		 * SysParameter中静态变量在此处赋值
		 */
		SysParameter.realPath = nutconfig.getServletContext().getRealPath("/");
	}
	/**
	 * 
	 * @名称 dataInsertInit
	 * @描述 数据初始化
	 * @参数 
	 * @返回值 void
	 * @作者 wdfang
	 * @时间 2013-3-8 上午12:48:09
	 */
	private void dataInsertInit(NutConfig nutconfig) {
		Dao dao = nutconfig.getIoc().get(Dao.class);
		for (Class<?> klass : Scans.me().scanPackage("com.fang.yttz.model")) {
			if (null != klass.getAnnotation(Table.class))
				dao.create(klass, false);
		}
		Tbuser tbuser = new Tbuser();
		tbuser.setCreatedate(new Date());
		tbuser.setEmail("wangdongfang1016@sina.com");
		tbuser.setName("超级管理员");
		tbuser.setPwd(Lang.md5("123456"));
		tbuser.setUserid("admin");
		tbuser.setTel("18638936065");
		
		Condition cnd = Cnd.where("userid","=",tbuser.getUserid());
		if(dao.count(Tbuser.class, cnd)<1)
			dao.insert(tbuser);
	}
}
